package article

import (
	"public_security/controllers"
	"public_security/models"
	"public_security/models/article"
)

// 新闻发布 API
type ArticleController struct {
	controllers.BaseController
}

func (i *ArticleController) Prepare() {
	i.BasePrepare()
}

// @Title createArticleType
// @Description 创建文章分类
// @Param	body		body 	models.ArticleType	 true		"请求参数"
// @Success 200 success
// @router /createArticleType [post]
func (i *ArticleController) CreateArticleType() interface{} {
	art := new(models.ArticleType)
	err := i.RequestJsonScan(&art)
	if err != nil {
		return i.ToMessageFailed(nil, "参数错误")
	}
	err = article.CreateType(art)
	if err != nil {
		return i.ToMessageFailed(nil, err.Error())
	}
	return i.ToMessageSuccess(nil, "创建成功")
}

// @Title updateArticleType
// @Description 修改文章分类
// @Param	body		body 	models.ArticleType	 true		"请求参数"
// @Success 200 success
// @router /updateArticleType [post]
func (i *ArticleController) UpdateArticleType() interface{} {
	art := new(models.ArticleType)
	err := i.RequestJsonScan(&art)
	if err != nil {
		return i.ToMessageFailed(nil, "参数错误")
	}
	err = article.UpdateType(art)
	if err != nil {
		return i.ToMessageFailed(nil, err.Error())
	}
	return i.ToMessageSuccess(nil, "修改成功")
}

// @Title removeArticleType
// @Description 删除文章分类
// @Param	body		body 	models.ArticleType	 true		"请求参数"
// @Success 200 success
// @router /removeArticleType [post]
func (i *ArticleController) RemoveArticleType() interface{} {
	art := new(models.ArticleType)
	err := i.RequestJsonScan(&art)
	if err != nil {
		return i.ToMessageFailed(nil, "参数错误")
	}
	err = article.RemoveType(art)
	if err != nil {
		return i.ToMessageFailed(nil, err.Error())
	}
	return i.ToMessageSuccess(nil, "删除成功")
}

// @Title queryArticleType
// @Description 查询文章分类
// @Param	body		body 	models.ArticleType	 true		"请求参数"
// @Success 200 {object} models.ArticleType
// @router /queryArticleType [post]
func (i *ArticleController) QueryArticleType() interface{} {
	art := new(models.ArticleType)
	err := i.RequestJsonScan(&art)
	if err != nil {
		return i.ToMessageFailed(nil, "参数错误")
	}
	results := article.QueryType(art)
	return i.ToMessageSuccess(results, "查询成功")
}

// @Title createArticle
// @Description 创建文章
// @Param	body		body 	models.Article	 true		"请求参数"
// @Success 200 success
// @router /createArticle [post]
func (i *ArticleController) CreateArticle() interface{} {
	art := new(models.Article)
	err := i.RequestJsonScan(&art)
	if err != nil {
		return i.ToMessageFailed(nil, "参数错误")
	}
	err = article.CreateArt(art)
	if err != nil {
		return i.ToMessageFailed(nil, err.Error())
	}
	return i.ToMessageSuccess(nil, "创建成功")
}

// @Title updateArticle
// @Description 修改文章
// @Param	body		body 	models.Article	 true		"请求参数"
// @Success 200 success
// @router /updateArticle [post]
func (i *ArticleController) UpdateArticle() interface{} {
	art := new(models.Article)
	err := i.RequestJsonScan(&art)
	if err != nil {
		return i.ToMessageFailed(nil, "参数错误")
	}
	err = article.UpdateArt(art)
	if err != nil {
		return i.ToMessageFailed(nil, err.Error())
	}
	return i.ToMessageSuccess(nil, "修改成功")
}

// @Title removeArticle
// @Description 删除文章
// @Param	body		body 	models.Article	 true		"请求参数"
// @Success 200 success
// @router /removeArticle [post]
func (i *ArticleController) RemoveArticle() interface{} {
	art := new(models.Article)
	err := i.RequestJsonScan(&art)
	if err != nil {
		return i.ToMessageFailed(nil, "参数错误")
	}
	err = article.RemoveArt(art)
	if err != nil {
		return i.ToMessageFailed(nil, err.Error())
	}
	return i.ToMessageSuccess(nil, "删除成功")
}

// @Title queryArticle
// @Description 查询文章
// @Param	body		body 	models.Article	 true		"请求参数"
// @Success 200 {object} models.Article
// @router /queryArticle [post]
func (i *ArticleController) QueryArticle() interface{} {
	art := new(models.Article)
	err := i.RequestJsonScan(&art)
	if err != nil {
		return i.ToMessageFailed(nil, "参数错误")
	}
	page := art.GetPageInfoNew()
	results, page := article.QueryArt(art, page)
	return i.ToMessageSuccess(results, "查询成功", map[string]interface{}{"pageInfo": page})
}

// @Title queryAllArticle
// @Description 查询文章
// @Param	body		body 	models.Article	 true		"请求参数"
// @Success 200 {object} []*models.Article
// @router /queryAllArticle [post]
func (i *ArticleController) QueryAllArticle() interface{} {
	results := article.QueryAllArt()
	return i.ToMessageSuccess(results, "查询成功")
}
